Use GSlice for GtkRequisition
authorJavier Jardón <jjardon@gnome.org>
Tue, 4 May 2010 03:27:50 +0000 (05:27 +0200)
committerJavier Jardón <jjardon@gnome.org>
Sat, 10 Jul 2010 04:13:45 +0000 (06:13 +0200)
Also add gtk_requisition_new to avoid memory allocator confusions when
using GtkRequisitions.

Based on a Christian Persch patch.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=461618

docs/reference/gtk/gtk3-sections.txt
gtk/gtk.symbols
gtk/gtkwidget.c
gtk/gtkwidget.h

index ffce37644622cd2e4d795e16064659da228a15ca..ce77892c7e17225c8d69e34c3de19de070d56c1d 100644 (file)
@@ -4942,6 +4942,7 @@ gtk_widget_get_requisition
 gtk_widget_device_is_shadowed
 
 <SUBSECTION>
+gtk_requisition_new
 gtk_requisition_copy
 gtk_requisition_free
 
index b5125d0e7d64cb60b4c314c20730e8ffc397f8a4..fe70e5c3386d73f1a41f3c3fce64bfee7115fd26 100644 (file)
@@ -4312,6 +4312,7 @@ gtk_vseparator_new
 gtk_requisition_copy
 gtk_requisition_free
 gtk_requisition_get_type G_GNUC_CONST
+gtk_requisition_new G_GNUC_MALLOC
 gtk_widget_activate
 gtk_widget_is_composited
 gtk_widget_add_accelerator
index a7d391bab8ed15c837d1a333c152832f3c9e5295..a4141af2bef5c876f6b3666af7b090676c0ce87c 100644 (file)
@@ -10240,6 +10240,22 @@ gtk_widget_class_path (GtkWidget *widget,
     }
 }
 
+/**
+ * gtk_requisition_new:
+ *
+ * Allocates a new #GtkRequisition structure and initializes its elements to zero.
+ *
+ * Returns: a new empty #GtkRequisition. The newly allocated #GtkRequisition should
+ *   be freed with gtk_requisition_free().
+ *
+ * Since: 3.0
+ */
+GtkRequisition *
+gtk_requisition_new (void)
+{
+  return g_slice_new0 (GtkRequisition);
+}
+
 /**
  * gtk_requisition_copy:
  * @requisition: a #GtkRequisition
@@ -10251,7 +10267,7 @@ gtk_widget_class_path (GtkWidget *widget,
 GtkRequisition *
 gtk_requisition_copy (const GtkRequisition *requisition)
 {
-  return (GtkRequisition *)g_memdup (requisition, sizeof (GtkRequisition));
+  return g_slice_dup (GtkRequisition, requisition);
 }
 
 /**
@@ -10263,7 +10279,7 @@ gtk_requisition_copy (const GtkRequisition *requisition)
 void
 gtk_requisition_free (GtkRequisition *requisition)
 {
-  g_free (requisition);
+  g_slice_free (GtkRequisition, requisition);
 }
 
 GType
index 15ec19851f82af1695441688ea6b1dcd14129dfc..0bae2c6da5bb0067a10c73451a9f7571709bc518 100644 (file)
@@ -954,6 +954,7 @@ void       gtk_widget_set_has_tooltip       (GtkWidget   *widget,
 gboolean   gtk_widget_get_has_tooltip       (GtkWidget   *widget);
 
 GType           gtk_requisition_get_type (void) G_GNUC_CONST;
+GtkRequisition *gtk_requisition_new      (void) G_GNUC_MALLOC;
 GtkRequisition *gtk_requisition_copy     (const GtkRequisition *requisition);
 void            gtk_requisition_free     (GtkRequisition       *requisition);